package main

import (
	"fmt"
	"net"
)

func HandleConn(conn net.Conn) {
	// 确保网络连接被关闭，在本例中可以忽略，因为后面会主动关闭
	defer conn.Close()
	buf := make([]byte, 1024)
	// 从网络连接中读取数据到字节切片buf中
	n, err := conn.Read(buf)
	if err != nil {
		fmt.Println(currentTime(), "服务端读取失败：", err.Error())
		return
	}
	// 以字符串形式打印客户端消息
	message := string(buf[0:n])
	fmt.Println("从客户端获得消息：", message)

	// 向客户端发送文本消息"close"，然后主动关闭网络连接
	conn.Write([]byte("close"))
	conn.Close()
}

//func currentTime() string {
//	return time.Now().Format("2006-01-02 15:04:05.000")
//}

func main15() {
	// 监听本地8888端口
	l, err := net.Listen("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("TCP监听错误：", err.Error())
	}

	// 循环接收客户端连接请求
	for {
		// 获得网络连接对象
		conn, err := l.Accept()
		if err != nil {
			fmt.Println("建立连接失败：", err.Error())
			return
		}

		// 创建子协程，并在其中处理网络连接
		go HandleConn(conn)
	}
}
